5.1.1 栅格数据的基本处理
5.1.2.1 投影栅格
5.1.2.1.1 简述R-gis坐标系
投影:
+proj=utm +zone=11 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
a_crs_object <- crs("+proj=longlat +datum=WGS84 +no_defs")
class(a_crs_object)
a_crs_object_epsg <- crs("+init=epsg:4326")
class(a_crs_object_epsg)
bio1 <- raster("data/bioclim/bio1.bil")
bio1
nrow(bio1) 查看变量的行数;
extent(bio1)查看变量的范围;
crs(bio1) 查看变量的参考系
res(bio1) 查看变量的分辨率
5.1.2.1.2 栅格投影与投影转换
crs.laea <- CRS("+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m +no_defs")
locs.laea <- spTransform(locs, crs.laea)
s.sf.gcs <- st_transform(s.sf, "+proj=longlat +datum=WGS84")
st_crs(s.sf.gcs)
crs.geo
projection(tmin1.c) <- crs.geo
tmin1.proj <- projectRaster(tmin1.c, crs = crs.geo)
crs(occ_final) <- myCRS1
library(sf)
library(tidyverse)
library(USAboundaries)
usa <- us_boundaries(type="state", resolution = "low") %>%
filter(!state_abbr %in% c("PR", "AK", "HI"))
wgs84 <- usa %>%
st_transform(4326)
albers <- usa %>%
st_transform(5070)
ggplot() +
geom_sf(data = wgs84, fill = NA)
ggplot() +
geom_sf(data = albers, fill = NA)
crs.geo <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84")
proj4string(tiffs) <- crs.geo
GCS_WGS_1984
WKID: 4326 权限: EPSG
至今,EPSG:3857(WGS 84 / Pseudo-Mercator) 代号是web墨卡托的正式代号。
cord.UTM <- spTransform(cord.dec, CRS("+init=epsg:32647"))
EPSG4326:Web墨卡托投影后的平面地图,但仍然使用WGS84的经度、纬度表示坐标;
EPSG3857:Web墨卡托投影后的平面地图,坐标单位为米。
5.1.2.2 构筑范围/缓冲区/掩膜
library(raster)
model.extent<-extent(min(rattler$lon)-10,max(rattler$lon)+10,min(rattler$lat)-10,max(rattler$lat)+10)
library(dismo)
> r <- raster(acg)
>
> res(r) <- 1
>
> r <- extend(r, extent(r)+1)
crs.geo <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84")
proj4string(tiffs) <- crs.geo
frange <- function(x){
occs <- x
xmin <- min(occs$longitude)
xmax <- max(occs$longitude)
ymin <- min(occs$latitude)
ymax <- max(occs$latitude)
bb <- matrix(c(xmin-5, xmin-5, xmax+5, xmax+5, xmin-5, ymin-5, ymax+5, ymax+5, ymin, ymin), ncol=2)
bgExt <- sp::SpatialPolygons(list(sp::Polygons(list(sp::Polygon(bb)), 1)))
return(bgExt)
}
sp::coordinates(occs) <- ~ longitude + latitude
bg_mcp <- mcp(occs)
bg_mcp <- rgeos::gBuffer(bg_mcp, width = 0.5)
occs <- xh_as[,2:3]
xmin <- min(occs$longitude)
xmax <- max(occs$longitude)
ymin <- min(occs$latitude)
ymax <- max(occs$latitude)
bb <- matrix(c(xmin, xmin, xmax, xmax, xmin, ymin, ymax, ymax, ymin, ymin), ncol=2)
bgExt <- sp::SpatialPolygons(list(sp::Polygons(list(sp::Polygon(bb)), 1)))
bgExt <- rgeos::gBuffer(bgExt, width = 0.5)
x = circles(subs[,c("longitude","latitude")], d=50000, lonlat=T)
modelEnv=crop(currentEnv,model.extent)
modelFutureEnv=crop(futureEnv, model.extent)
bio1_mask <- mask(bio1, occ_buffer)
plot(bio1_mask)
plot(occ_buffer,add=T)
plot(occ_final,add=T,col="blue")
a、System Toolboxes --> 3D Analyst Tools --> Conversion --> From Raster --> Raster Domain
b、System Toolboxes --> Conversion Tools --> From Raster --> Raster to Polygon
c、利用镶嵌数据集Footprint图层的方法来获取
null.cells=ndvi*elev2*hfp2
plot(null.cells)
5.1.2.3 栅格重采样
new = projcectRaster(ss,crs =crs(pj),res =1000,method =bilinear)
library(maptools)
data("wrld_simpl")
plot(wrld_simpl)
bio1 <- raster("data/bioclim/bio1.bil")
newRaster <- raster( nrow= nrow(bio1)/10 , ncol= ncol(bio1)/10 )
extent(newRaster) <- extent(bio1)
newRaster <- resample(x=bio1,y=newRaster,method='bilinear')
plot(bio1)
5.1.2.4 栅格镶嵌
srtm2 <- getData('SRTM', lon=13, lat=48)
srtm3 <- getData('SRTM', lon=9, lat=48)
srtmmosaic <- mosaic(srtm, srtm2, srtm3, fun=mean)
5.1.2.4 栅格重分类
myLayer<- raster("data/bioclim/bio1.bil")
binaryMap <- myLayer>= 100
plot(binaryMap)
myMethod <- c(-Inf, 0, 0,
0, 100, 1,
100, 200, 2,
200, Inf, 3)
myLayer_classified <- reclassify(myLayer,rcl= myMethod)
plot(myLayer_classified)
library(raster)
raster::calc
names <- list.files("C:/Users/admin/Desktop/tmean/",pattern = "tif",full.names = T)
for(i in 1:length(names)){
assign(paste0("p",i),
calc(raster(names[i]), function(x) { x[x<10] <- NA; return(x) }))
}
5.1.2.5 栅格计算
wet <- raster("data/bioclim/bio13.bil")
dry <- raster("data/bioclim/bio14.bil")
diff <- wet - dry
names(diff) <- "diff"
twoLayers <- stack(wet,dry)
meanPPT1 <- calc(twoLayers,fun=mean)
names(meanPPT1) <- "mean"
meanPPT2 <- (wet + dry)/2
names(meanPPT2) <- "mean"
5.1.2.5 栅格掩膜和裁剪
exten = CHN = getData("GDAM",CHN,level =0)
tif3 = crop(tif2 ,exten)
exten = CHN = getData("GDAM",CHN,level =0)
tif3 = mask(tif2 ,exten)
clim<-mask(crop(clim,bbox(bkg)),bkg)
5.1.2.6 栅格tif文件转asc文件
library(raster)
f <- "path/to/downloaded/file.tif"
r <- raster(f)
writeRaster(r, "path/to/outfile.asc", format="ascii",overwrite = T))
tifs <- list.files(path ="D:/XH/第三阶段_env/envsV3tif/",pattern="tif",full.names =T)
tiffs <- stack(tifs)
env_bgExt <- raster::mask(crop(tiffs$BIO17, bgExt),bgExt)
envs_bios <- mask(crop(tiffs,env_bgExt),env_bgExt)
d_list = as.list(envs_bios)
names <- names(envs_bios)
dir.create("D:/XH/fifth/sa_area")
export_masktif_asc <- function(x){
names = names(x)
output1 = paste0('D:/XH/fifth/sa_area/',names,'.tif')
output2 = paste0('D:/XH/fifth/sa_area/',names,'.asc')
writeRaster(x,output1,format ='GTiff' ,
overwrite = T)
writeRaster(x,output2,format ='ascii' ,
overwrite = T)}
lapply(d_list,export_masktif_asc)
namesy <- list.files(path="./ssp126-202040",pattern = "tif")
namesy[1]
export_band<-function(x){
names = namesy[x]
output = paste0('C:/Users/chengshanmei/Desktop/ssp126-202040/',names)
writeRaster(biocrops[[x]],output,format="ascii" ,
overwrite = T)}
lapply(1:length(namesy),export_band)
library(raster)
tifs <- list.files(pafenth ="D:/XH/莲子草/第三阶段_env/xhenvs2_5/",pattern="tif",full.names =T)
tiffs <- stack(tifs)
d_list = as.list(tiffs)
dir.create('./env2.5_asc')
getwd()
library(parallel)
library(snowfall)
names <- list.files(path ="D:/XH/莲子草/第三阶段_env/xhenvs2_5/",pattern="tif")
sfInit(parallel = TRUE, cpus = detectCores() - 4)
sfLibrary(raster)
sfLibrary(base)
sfExport("names")
sfExport("d_list")
export_masktif_asc <- function(x){
names = names(x)
output2 = paste0('D:/Rtem/env2.5_asc/',names,'.asc')
writeRaster(x,output2,format ='ascii' ,
overwrite = T)}
sfLapply(d_list,export_masktif_asc)
sfStop()
5.1.2.6 栅格tif文件批量重命名
library(tidyverse)
newname<- list.files("E:/sjdata/F2_ENVS/aseutif/",pattern = "tif") %>% strsplit(.,".tif")
nw <- c()
for(i in 1:42){
nw <- c(nw,newname[[i]][1])
}
nw
news <- paste0("E:/sjdata/F2_ENVS/aseutif/",nw,".tif")
file.rename(from = list.files(path="E:/sjdata/F2_ENVS/aseutif/",pattern = "tif",full.names = TRUE),
to = news)
5.1.2.7 栅格tif文件主成分分析
library(sp)
library(raster)
library(maps)
library(mapdata)
library(RStoolbox)
tifpca <- list.files(path ="D:/XH/莲子草/第三阶段_env//",pattern="tif",full.names =T)
tiffpcas <- stack(tifpca)
pcamap<-rasterPCA(tiffpcas,spca=TRUE)
summary(pcamap$model)
ff <- unlist(pcamap$map)
writeRaster(ff$PC2,"./pc2.tif")